// Object.defineProperty() 方法会直接在一个对象上定义一个新属性，或者修改一个对象的现有属性，并返回此对象。

const obj = {
  a: 3,
  b: 4,
  c: {
    x: 1,
    y: 2,
  },
};

let num;
// 可以接受三个参数
// 1. 对象 2. 劫持的属性 3. 描述性对象
Object.defineProperty(obj, "a", {
  get() {
    // get方法是在这个对象的该属性被访问的时候调用
    console.log("get");
    // get方法必须要有一个return，并且return的值就是那个对象的属性的值
    // return num;
  },
  set(val) {
    // set方法是当这个对象的该属性被修改的时候调用
    // 可以接受一个参数，就是要改的值
    console.log("set");
    // console.log(val);
    // num = val;
  },
});

obj.a = 10;
// obj.c.x = 5;
